
export {
    analyzeImageEmotions
}


/**
 * 分析图片的多维情感色彩（基于HSL_Rate属性）
 * @param {Array<Array<Object>>} pixels - 二维像素数组
 *        (第一维度: 高度, 第二维度: 宽度, 每个元素包含HSL_Rate属性)
 * @param {Object} [thresholds] - 可选的自定义阈值
 * @returns {Array<string>} 情感色彩描述数组
 */
function analyzeImageEmotions(pixels, thresholds = {}) {
    // 配置阈值 (带默认值)
    const config = {
        // 主色调阈值
        dominantThreshold: 0.60,  // 60%以上为主色调
        significantThreshold: 0.40, // 40%以上为显著色调

        // 明暗阈值
        brightThreshold: 0.7,     // 明亮阈值
        darkThreshold: 0.3,       // 暗调阈值

        // 饱和度阈值
        saturatedThreshold: 0.6,  // 高饱和度阈值
        mutedThreshold: 0.4,      // 低饱和度阈值

        // 情感检测阈值
        emotionThreshold: 0.25,   // 25%以上即认为存在该情感

        ...thresholds
    };

    // 初始化计数器
    let warmCount = 0;    // 暖色像素 (红/橙/黄)
    let coolCount = 0;    // 冷色像素 (蓝/青)
    let neutralCount = 0; // 中性色像素
    let brightCount = 0;  // 明亮像素
    let darkCount = 0;    // 暗调像素
    let vividCount = 0;   // 高饱和度
    let mutedCount = 0;   // 低饱和度
    let totalPixels = 0;

    const height = pixels.length;
    if (height === 0) return ["无像素数据"];

    // 遍历所有像素 (i=高度, j=宽度)
    for (let i = 0; i < height; i++) {
        const row = pixels[i];
        if (!row) continue;

        const width = row.length;
        for (let j = 0; j < width; j++) {
            const pixel = row[j];
            if (!pixel || !pixel.HSL_Rate) continue;

            // 从 HSL_Rate 获取归一化值
            const { H, S, L } = pixel.HSL_Rate;
            totalPixels++;

            // 冷暖色判断
            if ((H >= 0 && H <= 40) || (H >= 330 && H <= 360)) {
                warmCount++;  // 红/橙色范围
            } else if (H >= 170 && H <= 260) {
                coolCount++;  // 蓝/青色范围
            } else {
                neutralCount++; // 中性色
            }

            // 明暗判断
            if (L > config.brightThreshold) brightCount++;
            if (L < config.darkThreshold) darkCount++;

            // 饱和度判断
            if (S > config.saturatedThreshold) vividCount++;
            if (S < config.mutedThreshold) mutedCount++;
        }
    }

    if (totalPixels === 0) return ["无有效像素数据"];

    // 计算比例
    const warmRatio = warmCount / totalPixels;
    const coolRatio = coolCount / totalPixels;
    const neutralRatio = neutralCount / totalPixels;
    const brightRatio = brightCount / totalPixels;
    const darkRatio = darkCount / totalPixels;
    const vividRatio = vividCount / totalPixels;
    const mutedRatio = mutedCount / totalPixels;

    // 检测所有可能的情感
    const emotions = [];

    // 1. 主色调情感
    if (warmRatio > config.dominantThreshold) {
        emotions.push("温暖主导");
    } else if (coolRatio > config.dominantThreshold) {
        emotions.push("冷调主导");
    } else if (neutralRatio > config.dominantThreshold) {
        emotions.push("中性平衡");
    }

    // 2. 显著色调情感（不一定主导但显著存在）
    if (warmRatio > config.significantThreshold && warmRatio <= config.dominantThreshold) {
        emotions.push("暖色显著");
    }
    if (coolRatio > config.significantThreshold && coolRatio <= config.dominantThreshold) {
        emotions.push("冷色显著");
    }

    // 3. 明暗情感
    if (brightRatio > config.emotionThreshold) {
        if (brightRatio > config.dominantThreshold) {
            emotions.push("明亮主导");
        } else {
            emotions.push("明亮元素");
        }
    }

    if (darkRatio > config.emotionThreshold) {
        if (darkRatio > config.dominantThreshold) {
            emotions.push("暗调主导");
        } else {
            emotions.push("暗调元素");
        }
    }

    // 4. 饱和度情感
    if (vividRatio > config.emotionThreshold) {
        if (vividRatio > config.dominantThreshold) {
            emotions.push("高饱和主导");
        } else {
            emotions.push("鲜艳元素");
        }
    }

    if (mutedRatio > config.emotionThreshold) {
        if (mutedRatio > config.dominantThreshold) {
            emotions.push("低饱和主导");
        } else {
            emotions.push("柔和元素");
        }
    }

    // 5. 组合情感
    if (warmRatio > config.significantThreshold && brightRatio > config.significantThreshold) {
        emotions.push("温暖明亮");
    }

    if (warmRatio > config.significantThreshold && darkRatio > config.significantThreshold) {
        emotions.push("暖调暗黑");
    }

    if (coolRatio > config.significantThreshold && brightRatio > config.significantThreshold) {
        emotions.push("清新冷调");
    }

    if (coolRatio > config.significantThreshold && darkRatio > config.significantThreshold) {
        emotions.push("寒冷深邃");
    }

    if (vividRatio > config.significantThreshold && warmRatio > config.significantThreshold) {
        emotions.push("活力暖色");
    }

    if (vividRatio > config.significantThreshold && coolRatio > config.significantThreshold) {
        emotions.push("鲜明冷色");
    }

    if (mutedRatio > config.significantThreshold && warmRatio > config.significantThreshold) {
        emotions.push("柔和暖调");
    }

    if (mutedRatio > config.significantThreshold && coolRatio > config.significantThreshold) {
        emotions.push("沉静冷调");
    }

    // 6. 特殊情况
    if (brightRatio > config.significantThreshold && darkRatio > config.significantThreshold) {
        emotions.push("明暗对比");
    }

    if (vividRatio > config.significantThreshold && mutedRatio > config.significantThreshold) {
        emotions.push("饱和对比");
    }

    // 7. 如果没有检测到任何情感
    if (emotions.length === 0) {
        // 检查是否有主导但未检测的情况
        if (warmRatio > coolRatio && warmRatio > neutralRatio) {
            emotions.push("温暖倾向");
        } else if (coolRatio > warmRatio && coolRatio > neutralRatio) {
            emotions.push("冷调倾向");
        } else {
            emotions.push("平衡中性");
        }
    }

    return emotions;
}